package Arithmetic;

public class Operator4 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;

        // 定义两个布尔变量
        boolean x = true;
        boolean y = false;

        // 逻辑与 &&
        // 两个操作数都为 true 时，结果为 true，否则为 false
        boolean andResult = (x && y);
        System.out.println("逻辑与 x && y: " + andResult);

        // 逻辑或 ||
        // 两个操作数中至少有一个为 true 时，结果为 true，否则为 false
        boolean orResult = (x || y);
        System.out.println("逻辑或 x || y: " + orResult);

        // 逻辑非 !
        // 对操作数取反，true 变为 false，false 变为 true
        boolean notX = !x;
        System.out.println("逻辑非 !x: " + notX);

        // 结合关系运算符和逻辑运算符
        // 使用关系运算符比较 a 和 b 的大小，并结合逻辑运算符进行操作

        // (a > b) && (x || y)
        // a > b 为 false，x || y 为 true，因此整个表达式为 false
        boolean combinedResult1 = (a > b) && (x || y);
        System.out.println("(a > b) && (x || y): " + combinedResult1);

        // (a < b) || (x && y)
        // a < b 为 true，x && y 为 false，因此整个表达式为 true
        boolean combinedResult2 = (a < b) || (x && y);
        System.out.println("(a < b) || (x && y): " + combinedResult2);

        // 不常用的逻辑运算符

        // 异或 ^
        // 两个操作数不同时，结果为 true，否则为 false
        boolean xorResult = (x ^ y);
        System.out.println("异或 x ^ y: " + xorResult); // 输出: 异或 x ^ y: true

        // 按位取反 ~
        // 对整数进行按位取反操作，即对每一位取反
        // 注意：这是按位取反，不是逻辑取反
        int bitwiseNotA = ~a;
        System.out.println("按位取反 ~a: " + bitwiseNotA); // 输出: 按位取反 ~a: -11
    }
}
